This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Cmd+Shift+Enter.

rm(list = ls())

library(data.table)
library(tidyr)
library(maps)
library(haven)
library(ggplot2)
library(dplyr)

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Cmd+Option+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Cmd+Shift+K to preview the HTML file).

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

library(readxl)
countryfacts <- read_excel("/Users/cristinacandido/Documents/Github/risk_wvs/code/Hardship_complete_2024.xlsx")
countryfacts
NA
NA
countryfacts$homiciderate=log(countryfacts$homiciderate)
countryfacts$gdp=log(countryfacts$gdp)
countryfacts$infantmortality=log(countryfacts$infantmortality)
countryfacts$lifeexpectancy=log(countryfacts$lifeexpectancy)

countryfacts

# Reverse Codierung
countryfacts$homiciderate=scale(countryfacts$homiciderate)
countryfacts$gdp=scale(-countryfacts$gdp)
countryfacts$infantmortality=scale(countryfacts$infantmortality)
countryfacts$lifeexpectancy=scale(-countryfacts$lifeexpectancy)
countryfacts$gini=scale(countryfacts$gini)
countryfacts$femalemale_primedu=scale(-countryfacts$femalemale_primedu)
countryfacts

countryfacts$hardship_index=(countryfacts$homiciderate+countryfacts$gdp+countryfacts$gini+countryfacts$lifeexpectancy+countryfacts$infantmortality+countryfacts$femalemale_primedu)/6

countryfacts

# Laura added this code
library(dplyr)

# Impute missing values in the hardship indicators using the median
countryfacts <- countryfacts %>%
  mutate(across(c("homiciderate", "gdp", "infantmortality", "lifeexpectancy", "gini", "femalemale_primedu"),
                ~ifelse(is.na(.), median(., na.rm = TRUE), .)))

countryfacts

# Use the mutate function to change the country name
countryfacts <- countryfacts %>%
  mutate(country = ifelse(label == "Serbia and Montenegro", "Serbia", label))
countryfacts
# Data of Wave 5


WV5_data <- readRDS("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/F00007944-WV5_Data_R_v20180912.rds")


# Convert WV5_data-object in data.frame 
WV5_data_df <- as.data.frame(WV5_data)

# show first five columns
WV5_data_df
#rename the variables
data5 <- WV5_data_df %>%
  rename(gender = V235, age = V237, country_code = V2, wave = V1, risktaking = V86, children = V56, married = V55, employed = V241, education = V238)
data5

colnames(data5)
  [1] "wave"          "V1A"           "V1B"           "country_code"  "V2A"           "V3"            "V4"            "V4_CO"        
  [9] "V5"            "V5_CO"         "V6"            "V6_CO"         "V7"            "V7_CO"         "V8"            "V8_CO"        
 [17] "V9"            "V9_CO"         "V10"           "V11"           "V12"           "V13"           "V14"           "V15"          
 [25] "V16"           "V17"           "V18"           "V19"           "V20"           "V21"           "V22"           "V23"          
 [33] "V24"           "V25"           "V26"           "V27"           "V28"           "V29"           "V30"           "V31"          
 [41] "V32"           "V33"           "V34"           "V35"           "V36"           "V37"           "V38"           "V39"          
 [49] "V40"           "V41"           "V42"           "V43"           "V43_01"        "V43_02"        "V43_03"        "V43_04"       
 [57] "V43_05"        "V43_06"        "V43_07"        "V43_08"        "V43_09"        "V43_10"        "V43_11"        "V43_12"       
 [65] "V43_13"        "V43_14"        "V43_15"        "V43_16"        "V43_17"        "V43_18"        "V43_19"        "V43_20"       
 [73] "V43_21"        "V43_22"        "V43_23"        "V43_24"        "V43_25"        "V43_26"        "V43_27"        "V43_28"       
 [81] "V43_29"        "V43_30"        "V44"           "V45"           "V46"           "V47"           "V48"           "V49"          
 [89] "V50"           "V51"           "V52"           "V53"           "V54"           "married"       "children"      "V57"          
 [97] "V58"           "V59"           "V60"           "V61"           "V62"           "V63"           "V64"           "V65"          
[105] "V66"           "V67"           "V68"           "V69"           "V69_HK"        "V70"           "V70_HK"        "V71"          
[113] "V72"           "V73"           "V73_HK"        "V74"           "V74_HK"        "V75"           "V76"           "V77"          
[121] "V78"           "V79"           "V80"           "V81"           "V82"           "V83"           "V84"           "V85"          
[129] "risktaking"    "V87"           "V88"           "V89"           "V90"           "V91"           "V92"           "V93"          
[137] "V94"           "V95"           "V96"           "V97"           "V98"           "V99"           "V100"          "V101"         
[145] "V102"          "V103"          "V104"          "V105"          "V106"          "V107"          "V108"          "V109"         
[153] "V110"          "V111"          "V112"          "V113"          "V114"          "V115"          "V116"          "V117"         
[161] "V118"          "V119"          "V120"          "V121"          "V122"          "V123"          "V124"          "V125"         
[169] "V126"          "V127"          "V128"          "V129"          "V130"          "V130_CA_1"     "V130_IQ_1"     "V130_IQ_2"    
[177] "V130_IQ_3"     "V130_IQ_4"     "V130_NZ_1"     "V130_NZ_2"     "V131"          "V132"          "V133"          "V134"         
[185] "V135"          "V136"          "V137"          "V138"          "V139"          "V140"          "V141"          "V142"         
[193] "V143"          "V144"          "V145"          "V146_00"       "V146_01"       "V146_02"       "V146_03"       "V146_04"      
[201] "V146_05"       "V146_06"       "V146_07"       "V146_08"       "V146_09"       "V146_10"       "V146_11"       "V146_12"      
[209] "V146_13"       "V146_14"       "V146_15"       "V146_16"       "V146_17"       "V146_18"       "V146_19"       "V146_20"      
[217] "V146_21"       "V146_22"       "V147"          "V148"          "V149"          "V150"          "V151"          "V151_IQ_A"    
[225] "V151_IQ_B"     "V152"          "V153"          "V154"          "V155"          "V156"          "V157"          "V158"         
[233] "V159"          "V160"          "V161"          "V162"          "V163"          "V164"          "V165"          "V166"         
[241] "V167"          "V168"          "V169"          "V170"          "V171"          "V172"          "V173"          "V174"         
[249] "V175"          "V176"          "V177"          "V178"          "V179"          "V180"          "V181"          "V182"         
[257] "V183"          "V184"          "V185"          "V186"          "V187"          "V188"          "V189"          "V190"         
[265] "V191"          "V192"          "V193"          "V194"          "V195"          "V196"          "V197"          "V198"         
[273] "V199"          "V200"          "V201"          "V202"          "V203"          "V204"          "V205"          "V206"         
[281] "V207"          "V208"          "V209"          "V210"          "V211"          "V212"          "V213A"         "V213B"        
[289] "V213C"         "V213D"         "V213E"         "V213F"         "V213G"         "V213H"         "V213K"         "V213L"        
[297] "V213M"         "V213N"         "V214"          "V215"          "V216"          "V217"          "V218"          "V219"         
[305] "V220"          "V221"          "V222"          "V223"          "V224"          "V225"          "V226"          "V227"         
[313] "V228"          "V229"          "V230"          "V231"          "V232"          "V233"          "V233A"         "V234"         
[321] "gender"        "V236"          "age"           "education"     "V238CS"        "V239"          "V240"          "employed"     
[329] "V242"          "V242A_CO"      "V243"          "V244"          "V245"          "V246"          "V247"          "V248"         
[337] "V249"          "V250"          "V251"          "V252"          "V252B"         "V253"          "V253CS"        "V254"         
[345] "V255"          "V255CS"        "V256"          "V257"          "V257B"         "V257C"         "V258"          "V259"         
[353] "V259A"         "V260"          "V261"          "V262"          "V263"          "V264"          "V265"          "S024"         
[361] "S025"          "Y001"          "Y002"          "Y003"          "SACSECVAL"     "SECVALWGT"     "RESEMAVAL"     "WEIGHTB"      
[369] "I_AUTHORITY"   "I_NATIONALISM" "I_DEVOUT"      "DEFIANCE"      "WEIGHT1A"      "I_RELIGIMP"    "I_RELIGBEL"    "I_RELIGPRAC"  
[377] "DISBELIEF"     "WEIGHT2A"      "I_NORM1"       "I_NORM2"       "I_NORM3"       "RELATIVISM"    "WEIGHT3A"      "I_TRUSTARMY"  
[385] "I_TRUSTPOLICE" "I_TRUSTCOURTS" "SCEPTICISM"    "WEIGHT4A"      "I_INDEP"       "I_IMAGIN"      "I_NONOBED"     "AUTONOMY"     
[393] "WEIGHT1B"      "I_WOMJOB"      "I_WOMPOL"      "I_WOMEDU"      "EQUALITY"      "WEIGHT2B"      "I_HOMOLIB"     "I_ABORTLIB"   
[401] "I_DIVORLIB"    "CHOICE"        "WEIGHT3B"      "I_VOICE1"      "I_VOICE2"      "I_VOI2_00"     "VOICE"         "WEIGHT4B"     
[409] "S001"          "S007"          "S018"          "S019"          "S021"          "COW"          
#select only the variables of interest
data5 <- data5 %>%
  dplyr::select(gender, age, country_code, wave, risktaking, children, married, employed, education)
data5


# Read countrynames data from the CSV file (to decode the dataset 5)
countrynames <- read.csv("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/countrynames.txt", header = FALSE, as.is = TRUE)
colnames(countrynames) <- c("code", "name")


# Assuming WV5_data has a column named country_code
data5$country <- countrynames$name[match(data5$country_code, countrynames$code)]

# Check the frequency of each country in the new column
table(data5$country)

            Andorra           Argentina           Australia              Brazil            Bulgaria        Burkina Faso 
               1003                1002                1421                1500                1001                1534 
             Canada               Chile               China            Colombia          Cyprus (G)               Egypt 
               2164                1000                1991                3025                1050                3051 
           Ethiopia             Finland              France             Georgia             Germany               Ghana 
               1500                1014                1001                1500                2064                1534 
      Great Britain           Guatemala           Hong Kong             Hungary               India           Indonesia 
               1041                1000                1252                1007                2001                2015 
               Iran                Iraq               Italy               Japan              Jordan            Malaysia 
               2667                2701                1012                1096                1200                1201 
               Mali              Mexico             Moldova             Morocco         Netherlands         New Zealand 
               1534                1560                1046                1200                1050                 954 
             Norway                Peru              Poland             Romania              Russia              Rwanda 
               1025                1500                1000                1776                2033                1507 
             Serbia            Slovenia        South Africa         South Korea               Spain              Sweden 
               1220                1037                2988                1200                1200                1003 
        Switzerland              Taiwan            Thailand Trinidad and Tobago              Turkey             Ukraine 
               1241                1227                1534                1002                1346                1000 
      United States             Uruguay            Viet Nam              Zambia 
               1249                1000                1495                1500 
# Display the updated WV5_data
print(data5)
unique(data5$country)
 [1] "Andorra"             "Argentina"           "Australia"           "Brazil"              "Bulgaria"            "Burkina Faso"       
 [7] "Canada"              "Colombia"            "Cyprus (G)"          "Chile"               "China"               "Egypt"              
[13] "Ethiopia"            "Finland"             "France"              "Georgia"             "Germany"             "Ghana"              
[19] "Guatemala"           "Hong Kong"           "Hungary"             "India"               "Indonesia"           "Iran"               
[25] "Iraq"                "Italy"               "Japan"               "Jordan"              "Malaysia"            "Mali"               
[31] "Mexico"              "Moldova"             "Morocco"             "Netherlands"         "New Zealand"         "Norway"             
[37] "Peru"                "Poland"              "Romania"             "Russia"              "Rwanda"              "Serbia"             
[43] "Slovenia"            "South Africa"        "South Korea"         "Spain"               "Sweden"              "Switzerland"        
[49] "Taiwan"              "Thailand"            "Trinidad and Tobago" "Turkey"              "Ukraine"             "Great Britain"      
[55] "United States"       "Uruguay"             "Viet Nam"            "Zambia"             
print(countrynames)

country_counts <- data5 %>%
  count(country)

# Print the result
print(country_counts)
NA
NA
NA
#Read Dataset (Wave 6)

WV6_data <- load("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/WV6_Data_R_v20201117.rdata") 
WV6_data <- WV6_Data_R_v20201117 
print(WV6_data)
data6 <- WV6_data %>%
  rename(wave = V1, gender = V240, age = V242,country_code = V2, risktaking = V76, children = V58, married = V57, employed = V229, education = V248)


#select only the variables of interest

data6 <- data6 %>%
  dplyr::select(wave, gender, age, country_code,risktaking, children, married, employed, education)
data6
countrynames = read.csv("/Users/cristinacandido/Documents/Github/risk_wvs/data/WVS/countrynames.txt", header=FALSE,as.is=TRUE)
colnames(countrynames) = c("code", "name")
data6$country = countrynames$name [match(data6$country_code, countrynames$code)]
table(data6$country)

            Algeria           Argentina             Armenia           Australia          Azerbaijan             Belarus 
               1200                1030                1100                1477                1002                1535 
             Brazil               Chile               China            Colombia          Cyprus (G)             Ecuador 
               1486                1000                2300                1512                1000                1202 
              Egypt             Estonia             Georgia             Germany               Ghana               Haiti 
               1523                1533                1202                2046                1552                1996 
          Hong Kong               India                Iraq               Japan              Jordan          Kazakhstan 
               1000                4078                1200                2443                1200                1500 
             Kuwait          Kyrgyzstan             Lebanon               Libya            Malaysia              Mexico 
               1303                1500                1200                2131                1300                2000 
            Morocco         Netherlands         New Zealand             Nigeria            Pakistan           Palestine 
               1200                1902                 841                1759                1200                1000 
               Peru         Philippines              Poland               Qatar             Romania              Russia 
               1210                1200                 966                1060                1503                2500 
             Rwanda           Singapore            Slovenia        South Africa         South Korea               Spain 
               1527                1972                1069                3531                1200                1189 
             Sweden              Taiwan            Thailand Trinidad and Tobago             Tunisia              Turkey 
               1206                1238                1200                 999                1205                1605 
            Ukraine       United States             Uruguay          Uzbekistan               Yemen            Zimbabwe 
               1500                2232                1000                1500                1000                1500 
data6



data = rbind(data5, data6)
data

country_counts <- data %>%
  count(country)

# Print the result
print(country_counts)
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA




data = subset(data, risktaking > 0 & gender > 0 & age >0 & education > 0 & employed > 0 & married > 0 & children >= 0)
data5 = subset(data5, risktaking > 0 & gender > 0 & age >0 & education > 0 & employed > 0 & married > 0 & children >= 0)
data6 = subset(data6, risktaking > 0 & gender > 0 & age >0 & education > 0 & employed > 0 & married > 0 & children >= 0)
data <- na.omit(data)
data5 <- na.omit(data5)
data6 <- na.omit(data6)


data






# Use the mutate function to change the country name
data <- data %>%
  mutate(country = ifelse(country == "Great Britain", "United Kingdom", country))
# Transfrom risk item such that high values represent more risk taking
data$risktaking = 6 - data$risktaking + 1

  
# Transform risk variable into T-score (mean = 50, sd = 10)
data$risktaking = 10*scale(data$risktaking, center=TRUE,scale=TRUE)+50

data

#Transform risk variable into Z score 







country_counts <- data %>%
  count(country)

# Print the result
print(country_counts)
NA
NA
NA
NA
unique(mixed_model_data$country)
 [1] "Andorra"             "Argentina"           "Australia"           "Brazil"              "Bulgaria"            "Burkina Faso"       
 [7] "Canada"              "Cyprus (G)"          "Chile"               "China"               "Egypt"               "Ethiopia"           
[13] "Finland"             "France"              "Georgia"             "Germany"             "Ghana"               "Hungary"            
[19] "India"               "Indonesia"           "Iran"                "Japan"               "Malaysia"            "Mali"               
[25] "Mexico"              "Moldova"             "Morocco"             "Netherlands"         "Norway"              "Peru"               
[31] "Poland"              "Romania"             "Russia"              "Rwanda"              "Serbia"              "Slovenia"           
[37] "South Africa"        "South Korea"         "Spain"               "Sweden"              "Switzerland"         "Taiwan"             
[43] "Thailand"            "Trinidad and Tobago" "Turkey"              "Ukraine"             "United Kingdom"      "Uruguay"            
[49] "Viet Nam"            "Zambia"              "Algeria"             "Armenia"             "Azerbaijan"          "Belarus"            
[55] "Colombia"            "Ecuador"             "Estonia"             "Haiti"               "Iraq"                "Jordan"             
[61] "Kazakhstan"          "Kuwait"              "Kyrgyzstan"          "Lebanon"             "Libya"               "New Zealand"        
[67] "Nigeria"             "Pakistan"            "Palestine"           "Philippines"         "Qatar"               "Singapore"          
[73] "Tunisia"             "United States"       "Uzbekistan"          "Yemen"               "Zimbabwe"           
model0 = lmer(risktaking ~ 1 + (1|country),data = mixed_model_data)
summary_model0=summary(model0)
summary_model0
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: risktaking ~ 1 + (1 | country)
   Data: mixed_model_data

REML criterion at convergence: 1098751

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.31854 -0.82565 -0.07222  0.76171  2.53255 

Random effects:
 Groups   Name        Variance Std.Dev.
 country  (Intercept)  8.536   2.922   
 Residual             90.271   9.501   
Number of obs: 149626, groups:  country, 77

Fixed effects:
            Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)  50.1170     0.3341 76.1072     150   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# age, sex 
model1 = lmer(risktaking ~ 1 +scale(age)+factor(gender) + (1+scale(age)+factor(gender)|country),data = mixed_model_data, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 100000)))
summary_model1=summary(model1)
summary_model1
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: risktaking ~ 1 + scale(age) + factor(gender) + (1 + scale(age) +      factor(gender) | country)
   Data: mixed_model_data
Control: lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 1e+05))

REML criterion at convergence: 1089409

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.4750 -0.7820 -0.0772  0.7523  3.2237 

Random effects:
 Groups   Name            Variance Std.Dev. Corr     
 country  (Intercept)      6.5666  2.5625            
          scale(age)       0.7696  0.8773   0.31     
          factor(gender)1  0.8683  0.9318   0.12 0.25
 Residual                 84.6279  9.1993            
Number of obs: 149626, groups:  country, 77

Fixed effects:
                Estimate Std. Error      df t value Pr(>|t|)    
(Intercept)      51.3921     0.2946 76.2225  174.44   <2e-16 ***
scale(age)       -2.0245     0.1040 74.0988  -19.46   <2e-16 ***
factor(gender)1  -2.3103     0.1183 73.3894  -19.52   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) scl(g)
scale(age)  0.296        
fctr(gndr)1 0.067  0.222 
options(scipen = 100)
model_2 <- lmer(risktaking ~ 1 + scale(age) + factor(gender) + factor(children) + 
                 factor(married) + factor(education) + factor(employed) +
                 (1 + scale(age) + factor(gender) + factor(children) + factor(employed) +
                  factor(married) | country),
                data = mixed_model_data, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 100000)))


# Display the summary of the model
summary_model_2 = summary(model_2)
summary_model_2
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: risktaking ~ 1 + scale(age) + factor(gender) + factor(children) +      factor(married) + factor(education) + factor(employed) +  
    (1 + scale(age) + factor(gender) + factor(children) + factor(employed) +          factor(married) | country)
   Data: mixed_model_data
Control: lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 100000))

REML criterion at convergence: 1087990

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.5467 -0.7804 -0.0824  0.7417  3.1693 

Random effects:
 Groups   Name              Variance Std.Dev. Corr                         
 country  (Intercept)        5.3976  2.3233                                
          scale(age)         0.5288  0.7272    0.24                        
          factor(gender)1    0.9242  0.9614    0.03  0.23                  
          factor(children)1  0.8507  0.9223    0.06  0.20  0.08            
          factor(employed)1  0.3146  0.5609    0.05  0.02  0.04 -0.30      
          factor(married)1   0.4170  0.6458    0.21  0.43  0.55  0.24 -0.15
 Residual                   83.7200  9.1499                                
Number of obs: 149626, groups:  country, 77

Fixed effects:
                       Estimate   Std. Error           df t value             Pr(>|t|)    
(Intercept)            52.04570      0.27753     81.20889 187.532 < 0.0000000000000002 ***
scale(age)             -1.48038      0.08970     73.36927 -16.504 < 0.0000000000000002 ***
factor(gender)1        -2.16309      0.12236     73.60710 -17.678 < 0.0000000000000002 ***
factor(children)1      -1.30551      0.13085     71.81182  -9.977  0.00000000000000334 ***
factor(married)1       -0.84876      0.09853     63.36684  -8.614  0.00000000000289069 ***
factor(education)1      0.78635      0.06465 141746.72737  12.163 < 0.0000000000000002 ***
factor(employed)1       0.11606      0.08552     71.63892   1.357                0.179    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) scl(g) fctr(g)1 fctr(c)1 fctr(mr)1 fctr(d)1
scale(age)   0.223                                            
fctr(gndr)1 -0.021  0.210                                     
fctr(chld)1 -0.020  0.054  0.013                              
fctr(mrrd)1  0.128  0.296  0.396   -0.053                     
fctr(dctn)1 -0.173  0.082  0.013    0.025   -0.013            
fctr(mply)1 -0.026  0.056  0.091   -0.221   -0.112    -0.064  
options(scipen = 100)
model_3 <- lmer(risktaking ~ 1 + scale(age) * hardship_index + 
                    factor(gender) * hardship_index + factor(married) + factor(children) + 
                    factor(education) + factor(employed) + 
                    (1 + scale(age) + factor(married) + factor(children) + 
                     factor(education) + factor(employed) | country),
                data = mixed_model_data,control=lmerControl(optCtrl=list(maxfun=100000),optimizer="bobyqa"),REML = FALSE)

summary_model_3 = summary(model_3) 

summary_model_3
Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: risktaking ~ 1 + scale(age) * hardship_index + factor(gender) *  
    hardship_index + factor(married) + factor(children) + factor(education) +  
    factor(employed) + (1 + scale(age) + factor(married) + factor(children) +      factor(education) + factor(employed) | country)
   Data: mixed_model_data
Control: lmerControl(optCtrl = list(maxfun = 100000), optimizer = "bobyqa")

     AIC      BIC   logLik deviance df.resid 
 1088124  1088441  -544030  1088060   149594 

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.57289 -0.78048 -0.08135  0.74628  3.13371 

Random effects:
 Groups   Name               Variance Std.Dev. Corr                         
 country  (Intercept)         5.3097  2.3043                                
          scale(age)          0.3831  0.6189    0.18                        
          factor(married)1    0.3997  0.6322    0.11  0.13                  
          factor(children)1   0.8429  0.9181    0.09  0.07  0.29            
          factor(education)1  0.6031  0.7766   -0.19  0.02  0.05 -0.16      
          factor(employed)1   0.2772  0.5265    0.01  0.08 -0.31 -0.28  0.17
 Residual                    83.8045  9.1545                                
Number of obs: 149626, groups:  country, 77

Fixed effects:
                                   Estimate   Std. Error           df t value             Pr(>|t|)    
(Intercept)                        52.05151      0.27863     79.00522 186.809 < 0.0000000000000002 ***
scale(age)                         -1.44556      0.07885     74.23288 -18.333 < 0.0000000000000002 ***
hardship_index                      0.48045      0.36122     78.37462   1.330                0.187    
factor(gender)1                    -2.07791      0.05011 130205.86457 -41.465 < 0.0000000000000002 ***
factor(married)1                   -0.82964      0.09779     62.45753  -8.484 0.000000000005435008 ***
factor(children)1                  -1.33238      0.13036     75.96362 -10.221 0.000000000000000639 ***
factor(education)1                  0.78835      0.11788     52.04407   6.688 0.000000015530713363 ***
factor(employed)1                   0.11274      0.08221     74.70586   1.371                0.174    
scale(age):hardship_index           0.44120      0.10639     75.84443   4.147 0.000087032669696434 ***
hardship_index:factor(gender)1      0.56239      0.06626  63539.64806   8.488 < 0.0000000000000002 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) scl(g) hrdsh_ fctr(g)1 fctr(mr)1 fctr(c)1 fctr(d)1 fctr(mp)1 sc():_
scale(age)   0.160                                                                    
hardshp_ndx  0.064  0.034                                                             
fctr(gndr)1 -0.100  0.043  0.002                                                      
fctr(mrrd)1  0.054  0.081 -0.004  0.045                                               
fctr(chld)1 -0.002 -0.054 -0.003 -0.085   -0.024                                      
fctr(dctn)1 -0.283  0.077  0.015  0.016    0.020    -0.085                            
fctr(mply)1 -0.050  0.094  0.006  0.147   -0.198    -0.199    0.053                   
scl(g):hrd_  0.033  0.089  0.193  0.002   -0.005     0.005   -0.003   -0.035          
hrdshp_:()1 -0.002  0.010 -0.094  0.054   -0.012    -0.006    0.006    0.029     0.025
coefsallmodels
                                 Estimate Std. Error           df    t value      Pr(>|t|)
(Intercept)                    51.3920919 0.29461524     76.22248 174.437996 6.076728e-101
scale(age)                     -2.0244632 0.10403262     74.09877 -19.459889  7.575486e-31
factor(gender)1                -2.3102920 0.11834281     73.38941 -19.522031  8.836063e-31
(Intercept)                    52.0457036 0.27752914     81.20889 187.532390 7.079562e-109
scale(age)                     -1.4803822 0.08969988     73.36927 -16.503725  2.091517e-26
factor(gender)1                -2.1630922 0.12235740     73.60710 -17.678474  3.308666e-28
factor(children)1              -1.3055142 0.13084600     71.81182  -9.977487  3.340285e-15
factor(married)1               -0.8487646 0.09853010     63.36684  -8.614267  2.890689e-12
factor(education)1              0.7863481 0.06465316 141746.72737  12.162563  5.115145e-34
factor(employed)1               0.1160609 0.08552497     71.63892   1.357042  1.790284e-01
(Intercept)                    52.0515128 0.27863495     79.00522 186.808988 2.651542e-106
scale(age)                     -1.4455623 0.07885172     74.23288 -18.332667  2.801218e-29
factor(gender)1                -2.0779112 0.05011214 130205.86457 -41.465229  0.000000e+00
factor(married)1               -0.8296365 0.09778702     62.45753  -8.484117  5.435008e-12
factor(children)1              -1.3323810 0.13036015     75.96362 -10.220769  6.386100e-16
factor(education)1              0.7883519 0.11788435     52.04407   6.687503  1.553071e-08
factor(employed)1               0.1127397 0.08221100     74.70586   1.371346  1.743725e-01
hardship_index                  0.4804546 0.36122174     78.37462   1.330082  1.873490e-01
scale(age):hardship_index       0.4411983 0.10639345     75.84443   4.146856  8.703267e-05
hardship_index:factor(gender)1  0.5623868 0.06625882  63539.64806   8.487728  2.151804e-17
# Define the filename for the PDF
pdf("fixed_effects_plot_all_countries.pdf", width = 10, height = 8)  # Adjust width and height as needed

# Plot fixed effects for all countries
smoothScatter(mixed_model_data$age, mixed_model_data$risktaking, las=1, xaxt="n", yaxt="n", 
               xlab="Age", ylab="Risk-Taking Propensity", bty="n", 
               main="ALL", cex.main=0.8, nrpoints=0, 
               xlim=c(15,85), ylim=c(35,69), cex.lab=0.6)

# Add axes and labels
axis(1, at=c(15, 85), labels=c("15", "85"), cex.axis=0.7, tck=-0.01, line=0, mgp=c(3, 0.02, 0))
axis(2, at=c(35, 65), labels=c(35, 65), las=1, cex.axis=0.7, tck=-0.01, line=0, mgp=c(3, 0.3, 0))
mtext("Age", 1, line=0, cex=0.5)
mtext(expression(Risk~Taking~(italic(T)-score)), 2, line=1, cex=0.5)
text(73, 68, "All Countries")

# Retrieve coefficients
coefs <- fixef(model_2)

# Define regression lines
regline <- function(x) {
  coefs[1] + coefs[2] * x + coefs[4] * 0.5 + coefs[5] * 0.5 + coefs[6] * 0.5 + coefs[7] * 0.5
}
lines(mean(data$age) + seq(-3, 3, 0.1) * sd(data$age), 
      regline(seq(-3, 3, 0.1)), lty=1, lwd=3, col="red")
regline <- function(x) {
  coefs[1] + coefs[2] * x + coefs[3] + coefs[4] * 0.5 + coefs[5] * 0.5 + coefs[6] * 0.5 + coefs[7] * 0.5
}
lines(mean(data$age) + seq(-3, 3, 0.1) * sd(data$age), 
      regline(seq(-3, 3, 0.1)), lty=2, lwd=3, col="red")

# Save the plot as PDF
dev.off()
null device 
          1 
# Subset data for Algeria
australia_data <- mixed_model_data[mixed_model_data$country == "Australia", ]


# Plot fixed effects for Algeria
smoothScatter(australia_data$age, australia_data$risktaking, las=1, xaxt="n", yaxt="n", xlab="Age", ylab="Risk-Taking Propensity", bty="n", main="Australia", cex.main=0.8, nrpoints=0, xlim=c(15, 85), ylim=c(35, 69), cex.lab=0.6)

axis(1, at=c(15, 85), labels=c("15", "85"), cex.axis=0.7, tck=-0.01, line=0, mgp=c(3, 0.02, 0))
axis(2, at=c(35, 65), labels=c(35, 65), las=1, cex.axis=0.7, tck=-0.01, line=0, mgp=c(3, 0.3, 0))
mtext("Age", 1, line=0, cex=0.5)
mtext(expression(Risk~Taking~(italic(T)-score)), 2, line=1, cex=0.5)
text(73, 68, "Australia")

# Retrieve coefficients
coefs <- fixef(model_2)

# Define regression lines
regline <- function(x) {
  coefs[1] + coefs[2] * x + coefs[4] * 0.5 + coefs[5] * 0.5 + coefs[6] * 0.5 + coefs[7] * 0.5
}
lines(mean(australia_data$age) + seq(-3, 3, 0.1) * sd(australia_data$age), regline(seq(-3, 3, 0.1)), lty=1, lwd=3, col="red")
regline <- function(x) {
  coefs[1] + coefs[2] * x + coefs[3] + coefs[4] * 0.5 + coefs[5] * 0.5 + coefs[6] * 0.5 + coefs[7] * 0.5
}
lines(mean(australia_data$age) + seq(-3, 3, 0.1) * sd(australia_data$age), regline(seq(-3, 3, 0.1)), lty=2, lwd=3, col="red")

NA
NA
# Retrieve unique countries in the dataset
unique_countries <- unique(mixed_model_data$country)

# Function to plot fixed effects for a given country
plot_country_fixed_effects <- function(country_data, country_name) {
  # Plot fixed effects for the country
  smoothScatter(country_data$age, country_data$risktaking, las=1, xaxt="n", yaxt="n", 
                xlab="Age", ylab="Risk-Taking Propensity", bty="n", 
                main=country_name, cex.main=0.8, nrpoints=0, 
                xlim=c(15, 85), ylim=c(35, 69), cex.lab=0.6)
  
  # Add axes and labels
  axis(1, at=c(15, 85), labels=c("15", "85"), cex.axis=0.7, tck=-0.01, line=0, mgp=c(3, 0.02, 0))
  axis(2, at=c(35, 65), labels=c(35, 65), las=1, cex.axis=0.7, tck=-0.01, line=0, mgp=c(3, 0.3, 0))
  mtext("Age", 1, line=0, cex=0.5)
  mtext(expression(Risk~Taking~(italic(T)-score)), 2, line=1, cex=0.5)
  text(73, 68, country_name)
  
  # Retrieve coefficients
  coefs <- fixef(model_2)
  
  # Define regression lines
  regline <- function(x) {
    coefs[1] + coefs[2] * x + coefs[4] * 0.5 + coefs[5] * 0.5 + coefs[6] * 0.5 + coefs[7] * 0.5
  }
  lines(mean(country_data$age) + seq(-3, 3, 0.1) * sd(country_data$age), 
        regline(seq(-3, 3, 0.1)), lty=1, lwd=3, col="red")
  regline <- function(x) {
    coefs[1] + coefs[2] * x + coefs[3] + coefs[4] * 0.5 + coefs[5] * 0.5 + coefs[6] * 0.5 + coefs[7] * 0.5
  }
  lines(mean(country_data$age) + seq(-3, 3, 0.1) * sd(country_data$age), 
        regline(seq(-3, 3, 0.1)), lty=2, lwd=3, col="red")
}

# Plot fixed effects for each country
lapply(unique_countries, function(country) {
  country_data <- mixed_model_data[mixed_model_data$country == country, ]
  plot_country_fixed_effects(country_data, country)
})

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL

[[6]]
NULL

[[7]]
NULL

[[8]]
NULL

[[9]]
NULL

[[10]]
NULL

[[11]]
NULL

[[12]]
NULL

[[13]]
NULL

[[14]]
NULL

[[15]]
NULL

[[16]]
NULL

[[17]]
NULL

[[18]]
NULL

[[19]]
NULL

[[20]]
NULL

[[21]]
NULL

[[22]]
NULL

[[23]]
NULL

[[24]]
NULL

[[25]]
NULL

[[26]]
NULL

[[27]]
NULL

[[28]]
NULL

[[29]]
NULL

[[30]]
NULL

[[31]]
NULL

[[32]]
NULL

[[33]]
NULL

[[34]]
NULL

[[35]]
NULL

[[36]]
NULL

[[37]]
NULL

[[38]]
NULL

[[39]]
NULL

[[40]]
NULL

[[41]]
NULL

[[42]]
NULL

[[43]]
NULL

[[44]]
NULL

[[45]]
NULL

[[46]]
NULL

[[47]]
NULL

[[48]]
NULL

[[49]]
NULL

[[50]]
NULL

[[51]]
NULL

[[52]]
NULL

[[53]]
NULL

[[54]]
NULL

[[55]]
NULL

[[56]]
NULL

[[57]]
NULL

[[58]]
NULL

[[59]]
NULL

[[60]]
NULL

[[61]]
NULL

[[62]]
NULL

[[63]]
NULL

[[64]]
NULL

[[65]]
NULL

[[66]]
NULL

[[67]]
NULL

[[68]]
NULL

[[69]]
NULL

[[70]]
NULL

[[71]]
NULL

[[72]]
NULL

[[73]]
NULL

[[74]]
NULL

[[75]]
NULL

[[76]]
NULL

[[77]]
NULL

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKVGhpcyBpcyBhbiBbUiBNYXJrZG93bl0oaHR0cDovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbSkgTm90ZWJvb2suIFdoZW4geW91IGV4ZWN1dGUgY29kZSB3aXRoaW4gdGhlIG5vdGVib29rLCB0aGUgcmVzdWx0cyBhcHBlYXIgYmVuZWF0aCB0aGUgY29kZS4gCgpUcnkgZXhlY3V0aW5nIHRoaXMgY2h1bmsgYnkgY2xpY2tpbmcgdGhlICpSdW4qIGJ1dHRvbiB3aXRoaW4gdGhlIGNodW5rIG9yIGJ5IHBsYWNpbmcgeW91ciBjdXJzb3IgaW5zaWRlIGl0IGFuZCBwcmVzc2luZyAqQ21kK1NoaWZ0K0VudGVyKi4gCgpgYGB7cn0Kcm0obGlzdCA9IGxzKCkpCgpsaWJyYXJ5KGRhdGEudGFibGUpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkobWFwcykKbGlicmFyeShoYXZlbikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGRwbHlyKQpgYGAKCkFkZCBhIG5ldyBjaHVuayBieSBjbGlja2luZyB0aGUgKkluc2VydCBDaHVuayogYnV0dG9uIG9uIHRoZSB0b29sYmFyIG9yIGJ5IHByZXNzaW5nICpDbWQrT3B0aW9uK0kqLgoKV2hlbiB5b3Ugc2F2ZSB0aGUgbm90ZWJvb2ssIGFuIEhUTUwgZmlsZSBjb250YWluaW5nIHRoZSBjb2RlIGFuZCBvdXRwdXQgd2lsbCBiZSBzYXZlZCBhbG9uZ3NpZGUgaXQgKGNsaWNrIHRoZSAqUHJldmlldyogYnV0dG9uIG9yIHByZXNzICpDbWQrU2hpZnQrSyogdG8gcHJldmlldyB0aGUgSFRNTCBmaWxlKS4gCgpUaGUgcHJldmlldyBzaG93cyB5b3UgYSByZW5kZXJlZCBIVE1MIGNvcHkgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBlZGl0b3IuIENvbnNlcXVlbnRseSwgdW5saWtlICpLbml0KiwgKlByZXZpZXcqIGRvZXMgbm90IHJ1biBhbnkgUiBjb2RlIGNodW5rcy4gSW5zdGVhZCwgdGhlIG91dHB1dCBvZiB0aGUgY2h1bmsgd2hlbiBpdCB3YXMgbGFzdCBydW4gaW4gdGhlIGVkaXRvciBpcyBkaXNwbGF5ZWQuCgpgYGB7cn0KbGlicmFyeShyZWFkeGwpCmNvdW50cnlmYWN0cyA8LSByZWFkX2V4Y2VsKCIvVXNlcnMvY3Jpc3RpbmFjYW5kaWRvL0RvY3VtZW50cy9HaXRodWIvcmlza193dnMvY29kZS9IYXJkc2hpcF9jb21wbGV0ZV8yMDI0Lnhsc3giKQpjb3VudHJ5ZmFjdHMKCgpgYGAKYGBge3J9CmNvdW50cnlmYWN0cyRob21pY2lkZXJhdGU9bG9nKGNvdW50cnlmYWN0cyRob21pY2lkZXJhdGUpCmNvdW50cnlmYWN0cyRnZHA9bG9nKGNvdW50cnlmYWN0cyRnZHApCmNvdW50cnlmYWN0cyRpbmZhbnRtb3J0YWxpdHk9bG9nKGNvdW50cnlmYWN0cyRpbmZhbnRtb3J0YWxpdHkpCmNvdW50cnlmYWN0cyRsaWZlZXhwZWN0YW5jeT1sb2coY291bnRyeWZhY3RzJGxpZmVleHBlY3RhbmN5KQoKY291bnRyeWZhY3RzCgojIFJldmVyc2UgQ29kaWVydW5nCmNvdW50cnlmYWN0cyRob21pY2lkZXJhdGU9c2NhbGUoY291bnRyeWZhY3RzJGhvbWljaWRlcmF0ZSkKY291bnRyeWZhY3RzJGdkcD1zY2FsZSgtY291bnRyeWZhY3RzJGdkcCkKY291bnRyeWZhY3RzJGluZmFudG1vcnRhbGl0eT1zY2FsZShjb3VudHJ5ZmFjdHMkaW5mYW50bW9ydGFsaXR5KQpjb3VudHJ5ZmFjdHMkbGlmZWV4cGVjdGFuY3k9c2NhbGUoLWNvdW50cnlmYWN0cyRsaWZlZXhwZWN0YW5jeSkKY291bnRyeWZhY3RzJGdpbmk9c2NhbGUoY291bnRyeWZhY3RzJGdpbmkpCmNvdW50cnlmYWN0cyRmZW1hbGVtYWxlX3ByaW1lZHU9c2NhbGUoLWNvdW50cnlmYWN0cyRmZW1hbGVtYWxlX3ByaW1lZHUpCmNvdW50cnlmYWN0cwoKY291bnRyeWZhY3RzJGhhcmRzaGlwX2luZGV4PShjb3VudHJ5ZmFjdHMkaG9taWNpZGVyYXRlK2NvdW50cnlmYWN0cyRnZHArY291bnRyeWZhY3RzJGdpbmkrY291bnRyeWZhY3RzJGxpZmVleHBlY3RhbmN5K2NvdW50cnlmYWN0cyRpbmZhbnRtb3J0YWxpdHkrY291bnRyeWZhY3RzJGZlbWFsZW1hbGVfcHJpbWVkdSkvNgoKY291bnRyeWZhY3RzCgojIExhdXJhIGFkZGVkIHRoaXMgY29kZQpsaWJyYXJ5KGRwbHlyKQoKIyBJbXB1dGUgbWlzc2luZyB2YWx1ZXMgaW4gdGhlIGhhcmRzaGlwIGluZGljYXRvcnMgdXNpbmcgdGhlIG1lZGlhbgpjb3VudHJ5ZmFjdHMgPC0gY291bnRyeWZhY3RzICU+JQogIG11dGF0ZShhY3Jvc3MoYygiaG9taWNpZGVyYXRlIiwgImdkcCIsICJpbmZhbnRtb3J0YWxpdHkiLCAibGlmZWV4cGVjdGFuY3kiLCAiZ2luaSIsICJmZW1hbGVtYWxlX3ByaW1lZHUiKSwKICAgICAgICAgICAgICAgIH5pZmVsc2UoaXMubmEoLiksIG1lZGlhbiguLCBuYS5ybSA9IFRSVUUpLCAuKSkpCgpjb3VudHJ5ZmFjdHMKCiMgVXNlIHRoZSBtdXRhdGUgZnVuY3Rpb24gdG8gY2hhbmdlIHRoZSBjb3VudHJ5IG5hbWUKY291bnRyeWZhY3RzIDwtIGNvdW50cnlmYWN0cyAlPiUKICBtdXRhdGUoY291bnRyeSA9IGlmZWxzZShsYWJlbCA9PSAiU2VyYmlhIGFuZCBNb250ZW5lZ3JvIiwgIlNlcmJpYSIsIGxhYmVsKSkKY291bnRyeWZhY3RzCmBgYAoKCgpgYGB7cn0KIyBEYXRhIG9mIFdhdmUgNQoKCldWNV9kYXRhIDwtIHJlYWRSRFMoIi9Vc2Vycy9jcmlzdGluYWNhbmRpZG8vRG9jdW1lbnRzL0dpdGh1Yi9yaXNrX3d2cy9kYXRhL1dWUy9GMDAwMDc5NDQtV1Y1X0RhdGFfUl92MjAxODA5MTIucmRzIikKCgojIENvbnZlcnQgV1Y1X2RhdGEtb2JqZWN0IGluIGRhdGEuZnJhbWUgCldWNV9kYXRhX2RmIDwtIGFzLmRhdGEuZnJhbWUoV1Y1X2RhdGEpCgojIHNob3cgZmlyc3QgZml2ZSBjb2x1bW5zCldWNV9kYXRhX2RmCmBgYAoKCgpgYGB7cn0KI3JlbmFtZSB0aGUgdmFyaWFibGVzCmRhdGE1IDwtIFdWNV9kYXRhX2RmICU+JQogIHJlbmFtZShnZW5kZXIgPSBWMjM1LCBhZ2UgPSBWMjM3LCBjb3VudHJ5X2NvZGUgPSBWMiwgd2F2ZSA9IFYxLCByaXNrdGFraW5nID0gVjg2LCBjaGlsZHJlbiA9IFY1NiwgbWFycmllZCA9IFY1NSwgZW1wbG95ZWQgPSBWMjQxLCBlZHVjYXRpb24gPSBWMjM4KQpkYXRhNQoKY29sbmFtZXMoZGF0YTUpCgoKCiNzZWxlY3Qgb25seSB0aGUgdmFyaWFibGVzIG9mIGludGVyZXN0CmRhdGE1IDwtIGRhdGE1ICU+JQogIGRwbHlyOjpzZWxlY3QoZ2VuZGVyLCBhZ2UsIGNvdW50cnlfY29kZSwgd2F2ZSwgcmlza3Rha2luZywgY2hpbGRyZW4sIG1hcnJpZWQsIGVtcGxveWVkLCBlZHVjYXRpb24pCmRhdGE1CgoKIyBSZWFkIGNvdW50cnluYW1lcyBkYXRhIGZyb20gdGhlIENTViBmaWxlICh0byBkZWNvZGUgdGhlIGRhdGFzZXQgNSkKY291bnRyeW5hbWVzIDwtIHJlYWQuY3N2KCIvVXNlcnMvY3Jpc3RpbmFjYW5kaWRvL0RvY3VtZW50cy9HaXRodWIvcmlza193dnMvZGF0YS9XVlMvY291bnRyeW5hbWVzLnR4dCIsIGhlYWRlciA9IEZBTFNFLCBhcy5pcyA9IFRSVUUpCmNvbG5hbWVzKGNvdW50cnluYW1lcykgPC0gYygiY29kZSIsICJuYW1lIikKCgojIEFzc3VtaW5nIFdWNV9kYXRhIGhhcyBhIGNvbHVtbiBuYW1lZCBjb3VudHJ5X2NvZGUKZGF0YTUkY291bnRyeSA8LSBjb3VudHJ5bmFtZXMkbmFtZVttYXRjaChkYXRhNSRjb3VudHJ5X2NvZGUsIGNvdW50cnluYW1lcyRjb2RlKV0KCiMgQ2hlY2sgdGhlIGZyZXF1ZW5jeSBvZiBlYWNoIGNvdW50cnkgaW4gdGhlIG5ldyBjb2x1bW4KdGFibGUoZGF0YTUkY291bnRyeSkKCiMgRGlzcGxheSB0aGUgdXBkYXRlZCBXVjVfZGF0YQpwcmludChkYXRhNSkKdW5pcXVlKGRhdGE1JGNvdW50cnkpCgpwcmludChjb3VudHJ5bmFtZXMpCgpjb3VudHJ5X2NvdW50cyA8LSBkYXRhNSAlPiUKICBjb3VudChjb3VudHJ5KQoKIyBQcmludCB0aGUgcmVzdWx0CnByaW50KGNvdW50cnlfY291bnRzKQoKCgpgYGAKYGBge3J9CiNSZWFkIERhdGFzZXQgKFdhdmUgNikKCldWNl9kYXRhIDwtIGxvYWQoIi9Vc2Vycy9jcmlzdGluYWNhbmRpZG8vRG9jdW1lbnRzL0dpdGh1Yi9yaXNrX3d2cy9kYXRhL1dWUy9XVjZfRGF0YV9SX3YyMDIwMTExNy5yZGF0YSIpIApXVjZfZGF0YSA8LSBXVjZfRGF0YV9SX3YyMDIwMTExNyAKcHJpbnQoV1Y2X2RhdGEpCmBgYAoKYGBge3J9CmRhdGE2IDwtIFdWNl9kYXRhICU+JQogIHJlbmFtZSh3YXZlID0gVjEsIGdlbmRlciA9IFYyNDAsIGFnZSA9IFYyNDIsY291bnRyeV9jb2RlID0gVjIsIHJpc2t0YWtpbmcgPSBWNzYsIGNoaWxkcmVuID0gVjU4LCBtYXJyaWVkID0gVjU3LCBlbXBsb3llZCA9IFYyMjksIGVkdWNhdGlvbiA9IFYyNDgpCgoKI3NlbGVjdCBvbmx5IHRoZSB2YXJpYWJsZXMgb2YgaW50ZXJlc3QKCmRhdGE2IDwtIGRhdGE2ICU+JQogIGRwbHlyOjpzZWxlY3Qod2F2ZSwgZ2VuZGVyLCBhZ2UsIGNvdW50cnlfY29kZSxyaXNrdGFraW5nLCBjaGlsZHJlbiwgbWFycmllZCwgZW1wbG95ZWQsIGVkdWNhdGlvbikKZGF0YTYKYGBgCmBgYHtyfQpjb3VudHJ5bmFtZXMgPSByZWFkLmNzdigiL1VzZXJzL2NyaXN0aW5hY2FuZGlkby9Eb2N1bWVudHMvR2l0aHViL3Jpc2tfd3ZzL2RhdGEvV1ZTL2NvdW50cnluYW1lcy50eHQiLCBoZWFkZXI9RkFMU0UsYXMuaXM9VFJVRSkKY29sbmFtZXMoY291bnRyeW5hbWVzKSA9IGMoImNvZGUiLCAibmFtZSIpCmRhdGE2JGNvdW50cnkgPSBjb3VudHJ5bmFtZXMkbmFtZSBbbWF0Y2goZGF0YTYkY291bnRyeV9jb2RlLCBjb3VudHJ5bmFtZXMkY29kZSldCnRhYmxlKGRhdGE2JGNvdW50cnkpCmRhdGE2CmBgYApgYGB7cn0KCgoKZGF0YSA9IHJiaW5kKGRhdGE1LCBkYXRhNikKZGF0YQoKY291bnRyeV9jb3VudHMgPC0gZGF0YSAlPiUKICBjb3VudChjb3VudHJ5KQoKIyBQcmludCB0aGUgcmVzdWx0CnByaW50KGNvdW50cnlfY291bnRzKQoKCgoKCgoKCgoKYGBgCmBgYHtyfQoKCgoKZGF0YSA9IHN1YnNldChkYXRhLCByaXNrdGFraW5nID4gMCAmIGdlbmRlciA+IDAgJiBhZ2UgPjAgJiBlZHVjYXRpb24gPiAwICYgZW1wbG95ZWQgPiAwICYgbWFycmllZCA+IDAgJiBjaGlsZHJlbiA+PSAwKQpkYXRhNSA9IHN1YnNldChkYXRhNSwgcmlza3Rha2luZyA+IDAgJiBnZW5kZXIgPiAwICYgYWdlID4wICYgZWR1Y2F0aW9uID4gMCAmIGVtcGxveWVkID4gMCAmIG1hcnJpZWQgPiAwICYgY2hpbGRyZW4gPj0gMCkKZGF0YTYgPSBzdWJzZXQoZGF0YTYsIHJpc2t0YWtpbmcgPiAwICYgZ2VuZGVyID4gMCAmIGFnZSA+MCAmIGVkdWNhdGlvbiA+IDAgJiBlbXBsb3llZCA+IDAgJiBtYXJyaWVkID4gMCAmIGNoaWxkcmVuID49IDApCmRhdGEgPC0gbmEub21pdChkYXRhKQpkYXRhNSA8LSBuYS5vbWl0KGRhdGE1KQpkYXRhNiA8LSBuYS5vbWl0KGRhdGE2KQoKCmRhdGEKCgoKCgoKIyBVc2UgdGhlIG11dGF0ZSBmdW5jdGlvbiB0byBjaGFuZ2UgdGhlIGNvdW50cnkgbmFtZQpkYXRhIDwtIGRhdGEgJT4lCiAgbXV0YXRlKGNvdW50cnkgPSBpZmVsc2UoY291bnRyeSA9PSAiR3JlYXQgQnJpdGFpbiIsICJVbml0ZWQgS2luZ2RvbSIsIGNvdW50cnkpKQpgYGAKYGBge3J9CiMgVHJhbnNmcm9tIHJpc2sgaXRlbSBzdWNoIHRoYXQgaGlnaCB2YWx1ZXMgcmVwcmVzZW50IG1vcmUgcmlzayB0YWtpbmcKZGF0YSRyaXNrdGFraW5nID0gNiAtIGRhdGEkcmlza3Rha2luZyArIDEKCiAgCiMgVHJhbnNmb3JtIHJpc2sgdmFyaWFibGUgaW50byBULXNjb3JlIChtZWFuID0gNTAsIHNkID0gMTApCmRhdGEkcmlza3Rha2luZyA9IDEwKnNjYWxlKGRhdGEkcmlza3Rha2luZywgY2VudGVyPVRSVUUsc2NhbGU9VFJVRSkrNTAKCmRhdGEKCiNUcmFuc2Zvcm0gcmlzayB2YXJpYWJsZSBpbnRvIFogc2NvcmUgCgoKCgoKCgpjb3VudHJ5X2NvdW50cyA8LSBkYXRhICU+JQogIGNvdW50KGNvdW50cnkpCgojIFByaW50IHRoZSByZXN1bHQKcHJpbnQoY291bnRyeV9jb3VudHMpCgoKCgpgYGAKCmBgYHtyfQoKZGF0YSRnZW5kZXIgPSBpZmVsc2UoZGF0YSRnZW5kZXIgPT0gMSwgMCwgMSkgIyBzZXg6IG1hbGUgdnMuIGZlbWFsZQpkYXRhJGNoaWxkcmVuID0gaWZlbHNlKGRhdGEkY2hpbGRyZW4gPT0gMCwgMCwgMSkgIyBjaGlsZHJlbjogbm8gdnMuIHllcwpkYXRhJG1hcnJpZWQgPSBpZmVsc2UoZGF0YSRtYXJyaWVkID09IDEsIDEsIDApICMgbWFycmllZDogeWVzIHZzLiBubwpkYXRhJGVtcGxveWVkID0gaWZlbHNlKGRhdGEkZW1wbG95ZWQgPCA0LCAxLCAwKSAjIGVtcGxveWVkOiB5ZXMgdnMuIG5vCmRhdGEkZWR1Y2F0aW9uID0gaWZlbHNlKGRhdGEkZWR1Y2F0aW9uIDwgNCwgMCwgMSkgIyBlZHVjYXRpb246IG5vIHByaW1hcnkgdnMuIHByaW1hcnkrIAoKY291bnRyeWZhY3RzCgoKY291bnRyeWZhY3RzIDwtIGNvdW50cnlmYWN0cyAlPiUKICBkcGx5cjo6c2VsZWN0KGxhYmVsLCBjb2RlLCBoYXJkc2hpcF9pbmRleCkKY291bnRyeWZhY3RzCgpkYXRhCgoKYGBgCmBgYHtyfQpsaWJyYXJ5KGRwbHlyKQpjb3VudHJ5ZmFjdHM8LSByZW5hbWUoY291bnRyeWZhY3RzLCBjb3VudHJ5ID0gbGFiZWwpCgpjb3VudHJ5ZmFjdHMKCm1peGVkX21vZGVsX2RhdGEgPC0gbGVmdF9qb2luKGRhdGEsIGNvdW50cnlmYWN0cywgYnkgPSAiY291bnRyeSIpCm1peGVkX21vZGVsX2RhdGEKaGVhZChXVlNfbWl4ZWRfbW9kZWwpCgoKCnVuaXF1ZShtaXhlZF9tb2RlbF9kYXRhJGNvdW50cnkpCgpgYGAKYGBge3J9CmxpYnJhcnkobG1lclRlc3QpCgojIGludGVyY2VwdCBvbmx5IG1vZGVsCm1vZGVsMCA9IGxtZXIocmlza3Rha2luZyB+IDEgKyAoMXxjb3VudHJ5KSxkYXRhID0gbWl4ZWRfbW9kZWxfZGF0YSkKc3VtbWFyeV9tb2RlbDA9c3VtbWFyeShtb2RlbDApCnN1bW1hcnlfbW9kZWwwCmBgYApgYGB7cn0KbWl4ZWRfbW9kZWxfZGF0YQoKIyBhZ2UsIHNleCAKbW9kZWwxID0gbG1lcihyaXNrdGFraW5nIH4gMSArc2NhbGUoYWdlKStmYWN0b3IoZ2VuZGVyKSArICgxK3NjYWxlKGFnZSkrZmFjdG9yKGdlbmRlcil8Y291bnRyeSksZGF0YSA9IG1peGVkX21vZGVsX2RhdGEsIGNvbnRyb2wgPSBsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIiwgb3B0Q3RybCA9IGxpc3QobWF4ZnVuID0gMTAwMDAwKSkpCnN1bW1hcnlfbW9kZWwxPXN1bW1hcnkobW9kZWwxKQpzdW1tYXJ5X21vZGVsMQpgYGAKCmBgYHtyfQojbW9kZWwgMgpsaWJyYXJ5KGxtZTQpCmxpYnJhcnkobG1lclRlc3QpCgojIERlZmluZSB0aGUgbG1lciBtb2RlbCBhbmQgYXNzaWduIGl0IHRvICdtb2RlbF8yJwoKb3B0aW9ucyhzY2lwZW4gPSAxMDApCm1vZGVsXzIgPC0gbG1lcihyaXNrdGFraW5nIH4gMSArIHNjYWxlKGFnZSkgKyBmYWN0b3IoZ2VuZGVyKSArIGZhY3RvcihjaGlsZHJlbikgKyAKICAgICAgICAgICAgICAgICBmYWN0b3IobWFycmllZCkgKyBmYWN0b3IoZWR1Y2F0aW9uKSArIGZhY3RvcihlbXBsb3llZCkgKwogICAgICAgICAgICAgICAgICgxICsgc2NhbGUoYWdlKSArIGZhY3RvcihnZW5kZXIpICsgZmFjdG9yKGNoaWxkcmVuKSArIGZhY3RvcihlbXBsb3llZCkgKwogICAgICAgICAgICAgICAgICBmYWN0b3IobWFycmllZCkgfCBjb3VudHJ5KSwKICAgICAgICAgICAgICAgIGRhdGEgPSBtaXhlZF9tb2RlbF9kYXRhLCBjb250cm9sID0gbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIsIG9wdEN0cmwgPSBsaXN0KG1heGZ1biA9IDEwMDAwMCkpKQoKCiMgRGlzcGxheSB0aGUgc3VtbWFyeSBvZiB0aGUgbW9kZWwKc3VtbWFyeV9tb2RlbF8yID0gc3VtbWFyeShtb2RlbF8yKQpzdW1tYXJ5X21vZGVsXzIKCgoKCmBgYAoKCmBgYHtyfQpvcHRpb25zKHNjaXBlbiA9IDEwMCkKbW9kZWxfMyA8LSBsbWVyKHJpc2t0YWtpbmcgfiAxICsgc2NhbGUoYWdlKSAqIGhhcmRzaGlwX2luZGV4ICsgCiAgICAgICAgICAgICAgICAgICAgZmFjdG9yKGdlbmRlcikgKiBoYXJkc2hpcF9pbmRleCArIGZhY3RvcihtYXJyaWVkKSArIGZhY3RvcihjaGlsZHJlbikgKyAKICAgICAgICAgICAgICAgICAgICBmYWN0b3IoZWR1Y2F0aW9uKSArIGZhY3RvcihlbXBsb3llZCkgKyAKICAgICAgICAgICAgICAgICAgICAoMSArIHNjYWxlKGFnZSkgKyBmYWN0b3IobWFycmllZCkgKyBmYWN0b3IoY2hpbGRyZW4pICsgCiAgICAgICAgICAgICAgICAgICAgIGZhY3RvcihlZHVjYXRpb24pICsgZmFjdG9yKGVtcGxveWVkKSB8IGNvdW50cnkpLAogICAgICAgICAgICAgICAgZGF0YSA9IG1peGVkX21vZGVsX2RhdGEsY29udHJvbD1sbWVyQ29udHJvbChvcHRDdHJsPWxpc3QobWF4ZnVuPTEwMDAwMCksb3B0aW1pemVyPSJib2J5cWEiKSxSRU1MID0gRkFMU0UpCgpzdW1tYXJ5X21vZGVsXzMgPSBzdW1tYXJ5KG1vZGVsXzMpIAoKc3VtbWFyeV9tb2RlbF8zCgptaXhlZF9tb2RlbF9kYXRhCgpgYGAKCmBgYHtyfQojIERlZmluZSBhbm92YV9yZXN1bHRzIGxpc3Qgd2l0aCBtdWx0aXBsZSBhbm92YSgpIGNhbGxzCmFub3ZhX3Jlc3VsdHMgPC0gbGlzdCgKICBhbm92YShtb2RlbDAsIG1vZGVsMSksCiAgYW5vdmEobW9kZWwxLCBtb2RlbF8yKSwKICBhbm92YShtb2RlbF8yLCBtb2RlbF8zKQopCgphbm92YV9yZXN1bHRzCgpsaWJyYXJ5KGJyb29tKQpsaWJyYXJ5KHRpYmJsZSkKCgoKbGlicmFyeShkcGx5cikKIyBGb3JtYXQgQU5PVkEgcmVzdWx0cyBpbnRvIGEgdGlkeSBkYXRhIGZyYW1lCmFub3ZhX3N1bW1hcnkgPC0gYmluZF9yb3dzKGxhcHBseShhbm92YV9yZXN1bHRzLCB0aWR5KSwgLmlkID0gIkNvbXBhcmlzb24iKQoKIyBQcmludCB0aGUgc3VtbWFyeSB0YWJsZQpwcmludChhbm92YV9zdW1tYXJ5KQoKYGBgCmBgYHtyfQpjb2Vmc2FsbG1vZGVscz1yYmluZChzdW1tYXJ5X21vZGVsMSRjb2VmZmljaWVudHMsCnN1bW1hcnlfbW9kZWxfMiRjb2VmZmljaWVudHMsCnN1bW1hcnlfbW9kZWxfMyRjb2VmZmljaWVudHNbYygxOjIsNDo4LDMsOToxMCksXSkKCndyaXRlLmNzdihjb2Vmc2FsbG1vZGVscywiY29lZnNhbGxtb2RlbHMuY3N2IikKCmNvdW50cnlmYWN0cwptb2RlbGNvZWZzCgoKCmBgYAoKYGBge3J9CiMgRGVmaW5lIHRoZSBmaWxlbmFtZSBmb3IgdGhlIFBERgpwZGYoImZpeGVkX2VmZmVjdHNfcGxvdF9hbGxfY291bnRyaWVzLnBkZiIsIHdpZHRoID0gMTAsIGhlaWdodCA9IDgpICAjIEFkanVzdCB3aWR0aCBhbmQgaGVpZ2h0IGFzIG5lZWRlZAoKIyBQbG90IGZpeGVkIGVmZmVjdHMgZm9yIGFsbCBjb3VudHJpZXMKc21vb3RoU2NhdHRlcihtaXhlZF9tb2RlbF9kYXRhJGFnZSwgbWl4ZWRfbW9kZWxfZGF0YSRyaXNrdGFraW5nLCBsYXM9MSwgeGF4dD0ibiIsIHlheHQ9Im4iLCAKICAgICAgICAgICAgICAgeGxhYj0iQWdlIiwgeWxhYj0iUmlzay1UYWtpbmcgUHJvcGVuc2l0eSIsIGJ0eT0ibiIsIAogICAgICAgICAgICAgICBtYWluPSJBTEwiLCBjZXgubWFpbj0wLjgsIG5ycG9pbnRzPTAsIAogICAgICAgICAgICAgICB4bGltPWMoMTUsODUpLCB5bGltPWMoMzUsNjkpLCBjZXgubGFiPTAuNikKCiMgQWRkIGF4ZXMgYW5kIGxhYmVscwpheGlzKDEsIGF0PWMoMTUsIDg1KSwgbGFiZWxzPWMoIjE1IiwgIjg1IiksIGNleC5heGlzPTAuNywgdGNrPS0wLjAxLCBsaW5lPTAsIG1ncD1jKDMsIDAuMDIsIDApKQpheGlzKDIsIGF0PWMoMzUsIDY1KSwgbGFiZWxzPWMoMzUsIDY1KSwgbGFzPTEsIGNleC5heGlzPTAuNywgdGNrPS0wLjAxLCBsaW5lPTAsIG1ncD1jKDMsIDAuMywgMCkpCm10ZXh0KCJBZ2UiLCAxLCBsaW5lPTAsIGNleD0wLjUpCm10ZXh0KGV4cHJlc3Npb24oUmlza35UYWtpbmd+KGl0YWxpYyhUKS1zY29yZSkpLCAyLCBsaW5lPTEsIGNleD0wLjUpCnRleHQoNzMsIDY4LCAiQWxsIENvdW50cmllcyIpCgojIFJldHJpZXZlIGNvZWZmaWNpZW50cwpjb2VmcyA8LSBmaXhlZihtb2RlbF8yKQoKIyBEZWZpbmUgcmVncmVzc2lvbiBsaW5lcwpyZWdsaW5lIDwtIGZ1bmN0aW9uKHgpIHsKICBjb2Vmc1sxXSArIGNvZWZzWzJdICogeCArIGNvZWZzWzRdICogMC41ICsgY29lZnNbNV0gKiAwLjUgKyBjb2Vmc1s2XSAqIDAuNSArIGNvZWZzWzddICogMC41Cn0KbGluZXMobWVhbihkYXRhJGFnZSkgKyBzZXEoLTMsIDMsIDAuMSkgKiBzZChkYXRhJGFnZSksIAogICAgICByZWdsaW5lKHNlcSgtMywgMywgMC4xKSksIGx0eT0xLCBsd2Q9MywgY29sPSJyZWQiKQpyZWdsaW5lIDwtIGZ1bmN0aW9uKHgpIHsKICBjb2Vmc1sxXSArIGNvZWZzWzJdICogeCArIGNvZWZzWzNdICsgY29lZnNbNF0gKiAwLjUgKyBjb2Vmc1s1XSAqIDAuNSArIGNvZWZzWzZdICogMC41ICsgY29lZnNbN10gKiAwLjUKfQpsaW5lcyhtZWFuKGRhdGEkYWdlKSArIHNlcSgtMywgMywgMC4xKSAqIHNkKGRhdGEkYWdlKSwgCiAgICAgIHJlZ2xpbmUoc2VxKC0zLCAzLCAwLjEpKSwgbHR5PTIsIGx3ZD0zLCBjb2w9InJlZCIpCgojIFNhdmUgdGhlIHBsb3QgYXMgUERGCmRldi5vZmYoKQoKCgpgYGAKYGBge3J9CiMgU3Vic2V0IGRhdGEgZm9yIEFsZ2VyaWEKYXVzdHJhbGlhX2RhdGEgPC0gbWl4ZWRfbW9kZWxfZGF0YVttaXhlZF9tb2RlbF9kYXRhJGNvdW50cnkgPT0gIkF1c3RyYWxpYSIsIF0KCgojIFBsb3QgZml4ZWQgZWZmZWN0cyBmb3IgQWxnZXJpYQpzbW9vdGhTY2F0dGVyKGF1c3RyYWxpYV9kYXRhJGFnZSwgYXVzdHJhbGlhX2RhdGEkcmlza3Rha2luZywgbGFzPTEsIHhheHQ9Im4iLCB5YXh0PSJuIiwgeGxhYj0iQWdlIiwgeWxhYj0iUmlzay1UYWtpbmcgUHJvcGVuc2l0eSIsIGJ0eT0ibiIsIG1haW49IkF1c3RyYWxpYSIsIGNleC5tYWluPTAuOCwgbnJwb2ludHM9MCwgeGxpbT1jKDE1LCA4NSksIHlsaW09YygzNSwgNjkpLCBjZXgubGFiPTAuNikKCmF4aXMoMSwgYXQ9YygxNSwgODUpLCBsYWJlbHM9YygiMTUiLCAiODUiKSwgY2V4LmF4aXM9MC43LCB0Y2s9LTAuMDEsIGxpbmU9MCwgbWdwPWMoMywgMC4wMiwgMCkpCmF4aXMoMiwgYXQ9YygzNSwgNjUpLCBsYWJlbHM9YygzNSwgNjUpLCBsYXM9MSwgY2V4LmF4aXM9MC43LCB0Y2s9LTAuMDEsIGxpbmU9MCwgbWdwPWMoMywgMC4zLCAwKSkKbXRleHQoIkFnZSIsIDEsIGxpbmU9MCwgY2V4PTAuNSkKbXRleHQoZXhwcmVzc2lvbihSaXNrflRha2luZ34oaXRhbGljKFQpLXNjb3JlKSksIDIsIGxpbmU9MSwgY2V4PTAuNSkKdGV4dCg3MywgNjgsICJBdXN0cmFsaWEiKQoKIyBSZXRyaWV2ZSBjb2VmZmljaWVudHMKY29lZnMgPC0gZml4ZWYobW9kZWxfMikKCiMgRGVmaW5lIHJlZ3Jlc3Npb24gbGluZXMKcmVnbGluZSA8LSBmdW5jdGlvbih4KSB7CiAgY29lZnNbMV0gKyBjb2Vmc1syXSAqIHggKyBjb2Vmc1s0XSAqIDAuNSArIGNvZWZzWzVdICogMC41ICsgY29lZnNbNl0gKiAwLjUgKyBjb2Vmc1s3XSAqIDAuNQp9CmxpbmVzKG1lYW4oYXVzdHJhbGlhX2RhdGEkYWdlKSArIHNlcSgtMywgMywgMC4xKSAqIHNkKGF1c3RyYWxpYV9kYXRhJGFnZSksIHJlZ2xpbmUoc2VxKC0zLCAzLCAwLjEpKSwgbHR5PTEsIGx3ZD0zLCBjb2w9InJlZCIpCnJlZ2xpbmUgPC0gZnVuY3Rpb24oeCkgewogIGNvZWZzWzFdICsgY29lZnNbMl0gKiB4ICsgY29lZnNbM10gKyBjb2Vmc1s0XSAqIDAuNSArIGNvZWZzWzVdICogMC41ICsgY29lZnNbNl0gKiAwLjUgKyBjb2Vmc1s3XSAqIDAuNQp9CmxpbmVzKG1lYW4oYXVzdHJhbGlhX2RhdGEkYWdlKSArIHNlcSgtMywgMywgMC4xKSAqIHNkKGF1c3RyYWxpYV9kYXRhJGFnZSksIHJlZ2xpbmUoc2VxKC0zLCAzLCAwLjEpKSwgbHR5PTIsIGx3ZD0zLCBjb2w9InJlZCIpCgoKYGBgCmBgYHtyfQojIFJldHJpZXZlIHVuaXF1ZSBjb3VudHJpZXMgaW4gdGhlIGRhdGFzZXQKdW5pcXVlX2NvdW50cmllcyA8LSB1bmlxdWUobWl4ZWRfbW9kZWxfZGF0YSRjb3VudHJ5KQoKIyBGdW5jdGlvbiB0byBwbG90IGZpeGVkIGVmZmVjdHMgZm9yIGEgZ2l2ZW4gY291bnRyeQpwbG90X2NvdW50cnlfZml4ZWRfZWZmZWN0cyA8LSBmdW5jdGlvbihjb3VudHJ5X2RhdGEsIGNvdW50cnlfbmFtZSkgewogICMgUGxvdCBmaXhlZCBlZmZlY3RzIGZvciB0aGUgY291bnRyeQogIHNtb290aFNjYXR0ZXIoY291bnRyeV9kYXRhJGFnZSwgY291bnRyeV9kYXRhJHJpc2t0YWtpbmcsIGxhcz0xLCB4YXh0PSJuIiwgeWF4dD0ibiIsIAogICAgICAgICAgICAgICAgeGxhYj0iQWdlIiwgeWxhYj0iUmlzay1UYWtpbmcgUHJvcGVuc2l0eSIsIGJ0eT0ibiIsIAogICAgICAgICAgICAgICAgbWFpbj1jb3VudHJ5X25hbWUsIGNleC5tYWluPTAuOCwgbnJwb2ludHM9MCwgCiAgICAgICAgICAgICAgICB4bGltPWMoMTUsIDg1KSwgeWxpbT1jKDM1LCA2OSksIGNleC5sYWI9MC42KQogIAogICMgQWRkIGF4ZXMgYW5kIGxhYmVscwogIGF4aXMoMSwgYXQ9YygxNSwgODUpLCBsYWJlbHM9YygiMTUiLCAiODUiKSwgY2V4LmF4aXM9MC43LCB0Y2s9LTAuMDEsIGxpbmU9MCwgbWdwPWMoMywgMC4wMiwgMCkpCiAgYXhpcygyLCBhdD1jKDM1LCA2NSksIGxhYmVscz1jKDM1LCA2NSksIGxhcz0xLCBjZXguYXhpcz0wLjcsIHRjaz0tMC4wMSwgbGluZT0wLCBtZ3A9YygzLCAwLjMsIDApKQogIG10ZXh0KCJBZ2UiLCAxLCBsaW5lPTAsIGNleD0wLjUpCiAgbXRleHQoZXhwcmVzc2lvbihSaXNrflRha2luZ34oaXRhbGljKFQpLXNjb3JlKSksIDIsIGxpbmU9MSwgY2V4PTAuNSkKICB0ZXh0KDczLCA2OCwgY291bnRyeV9uYW1lKQogIAogICMgUmV0cmlldmUgY29lZmZpY2llbnRzCiAgY29lZnMgPC0gZml4ZWYobW9kZWxfMikKICAKICAjIERlZmluZSByZWdyZXNzaW9uIGxpbmVzCiAgcmVnbGluZSA8LSBmdW5jdGlvbih4KSB7CiAgICBjb2Vmc1sxXSArIGNvZWZzWzJdICogeCArIGNvZWZzWzRdICogMC41ICsgY29lZnNbNV0gKiAwLjUgKyBjb2Vmc1s2XSAqIDAuNSArIGNvZWZzWzddICogMC41CiAgfQogIGxpbmVzKG1lYW4oY291bnRyeV9kYXRhJGFnZSkgKyBzZXEoLTMsIDMsIDAuMSkgKiBzZChjb3VudHJ5X2RhdGEkYWdlKSwgCiAgICAgICAgcmVnbGluZShzZXEoLTMsIDMsIDAuMSkpLCBsdHk9MSwgbHdkPTMsIGNvbD0icmVkIikKICByZWdsaW5lIDwtIGZ1bmN0aW9uKHgpIHsKICAgIGNvZWZzWzFdICsgY29lZnNbMl0gKiB4ICsgY29lZnNbM10gKyBjb2Vmc1s0XSAqIDAuNSArIGNvZWZzWzVdICogMC41ICsgY29lZnNbNl0gKiAwLjUgKyBjb2Vmc1s3XSAqIDAuNQogIH0KICBsaW5lcyhtZWFuKGNvdW50cnlfZGF0YSRhZ2UpICsgc2VxKC0zLCAzLCAwLjEpICogc2QoY291bnRyeV9kYXRhJGFnZSksIAogICAgICAgIHJlZ2xpbmUoc2VxKC0zLCAzLCAwLjEpKSwgbHR5PTIsIGx3ZD0zLCBjb2w9InJlZCIpCn0KCiMgUGxvdCBmaXhlZCBlZmZlY3RzIGZvciBlYWNoIGNvdW50cnkKbGFwcGx5KHVuaXF1ZV9jb3VudHJpZXMsIGZ1bmN0aW9uKGNvdW50cnkpIHsKICBjb3VudHJ5X2RhdGEgPC0gbWl4ZWRfbW9kZWxfZGF0YVttaXhlZF9tb2RlbF9kYXRhJGNvdW50cnkgPT0gY291bnRyeSwgXQogIHBsb3RfY291bnRyeV9maXhlZF9lZmZlY3RzKGNvdW50cnlfZGF0YSwgY291bnRyeSkKfSkKCgpgYGAKCgo=